package protobuf.Serialization;

import myClient.session.ClientSession;
import protobuf.protoClass.ProtoMsg;

/**
 * <pre>
 *     基类 ---  序列化
 *     将 class类 序列化为 protoBuf类型
 *     根据传入的 {@link ProtoMsg.HeadType} ,{@link ClientSession}
 *     构建 {@link ProtoMsg.Message} 的前三个字段
 * </pre>
 */

public class BaseConverter {

    protected ProtoMsg.HeadType type; //通用字段：消息类型
    //private long sequence;            //通用字段：消息序列号
    protected ClientSession session;    //通过 session设置：会话 id

    public BaseConverter(ProtoMsg.HeadType type, ClientSession session) {
        this.type = type;
        this.session = session;
    }

    /**
     * 构建 {@link ProtoMsg.Message.Builder} ,设置 ProtoMsg.Message 前三个字段
     *
     * @param sequence 信息序列号
     * @return ProtoMsg.Message.Builder
     */
    public ProtoMsg.Message.Builder get_ProtoMsg_Message_Builder_withThreeFields(long sequence) {

        return ProtoMsg.Message.newBuilder()
                .setType(type)
                .setSequence(sequence)
                .setSessionId(session.getSessionID());
    }

}
